package aventuraespacial;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;


/**
 * @author  woodoo
 */
public class BalaBarredora extends Bala{
	
	static final int ANCHO_BALA_BARREDORA=EspacioExterior.ANCHO_PANTALLA;
	static final int ALTO_BALA_BARREDORA=19;
	static final String NOMBRE_ICONO_BALA="iconoBalaBarredora.png";	
	static final String NOMBRE_BALA="BalaBarredora.png";
	static final int RANGO=30;
	
		/******************* CONSTRUCTOR DE BALA BARREDORA ******************/
	
	public BalaBarredora(double x, double y, double velocidad, double angulo){
		super(x,y,velocidad,angulo);
		this.setForma(new Rectangle(ANCHO_BALA_BARREDORA,ALTO_BALA_BARREDORA));
		 this.setImagen(cargarImagen(NOMBRE_BALA));
	}
	
		/***************************** GETTERS *********************************/
	@Override
	public int getAlto() {
		
		return ALTO_BALA_BARREDORA;
	}

	@Override
	public int getAncho() {
		
		return ANCHO_BALA_BARREDORA;
	}
	/************************* IMPLEMENTACION DE METODOS*************************/
	

	@Override//EspacioExterior.ANCHO_PANTALLA EspacioExterior.ALTO_PANTALLA
	public boolean fueraDePantalla() {
		
		if (this.x<(0) || this.x> (EspacioExterior.ANCHO_PANTALLA) ) return true;
        else if ( this.y< (0) || this.y> (EspacioExterior.ALTO_PANTALLA)) return true;
            else return false;
	}

	@Override
	public void guardarseEnNave(Nave nave) {
		nave.agregarBala(this);
		
	}

	@Override
	public Bala identidad() {
		
		return new BalaBarredora(this.getX(),this.getY(),this.getVelocidad(),this.getAngulo());
	}

	@Override
	public Rectangle getBordes() {
		int mitadAncho= (int) (ANCHO_BALA_BARREDORA/2 );
		int mitadAlto=(int) (ALTO_BALA_BARREDORA/2) ;
		return new Rectangle((int)this.getX()-mitadAncho,(int)this.getY()-mitadAlto,ANCHO_BALA_BARREDORA,ALTO_BALA_BARREDORA);
	}
	
	

	@Override
	public void establecerModeloNave(Nave nave) {
		nave.incCantPoderesEspeciales();
		
	}

	@Override
	public void impactarCon(ObjetoEspacial obj) {
		obj.setVivo(false);
		
		
	}

	
	@Override
	public int getRango() {
			return	RANGO;	
	}

	@Override
	public String getNombreIcono() {
		
		return NOMBRE_ICONO_BALA;
	}

	@Override
	public void dibujar(Graphics2D g) {
		AffineTransform identidad= new AffineTransform();		
		AffineTransform trans= new AffineTransform();
		//DIBUJO EL CONTORNO
		if(ObjetoEspacial.isBordesActivados()){
			g.setTransform(identidad);
			g.setColor(Color.WHITE);
			g.draw(getBordes());
		}
		//MUESTRO LA IMAGEN
		trans.setTransform(identidad);
		trans.translate(x-(ANCHO_BALA_BARREDORA/2), y-(ALTO_BALA_BARREDORA/2));
		
		g.drawImage(getImagen(),trans,null);
		
	}
}
